package tk.capkiller.sharelinks.biz.test;

import static org.junit.Assert.*;

import java.awt.Point;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.filechooser.FileFilter;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.sun.xml.internal.ws.util.StringUtils;

import tk.capkiller.sharelinks.biz.CaptchaBreaker;
import tk.capkiller.sharelinks.biz.CompareImage;
import tk.capkiller.sharelinks.biz.EasyImage;
import tk.capkiller.sharelinks.biz.GridCounter;
import tk.capkiller.sharelinks.biz.StringIntegerPair;
import tk.capkiller.sharelinks.biz.ValuesInAGrid;

public class CapKillerTestCase {
	private List<File> imagesToTest;

	@Before
	public void setUp() throws Exception {
		File testDir = new File(CaptchaBreaker.PATH_TESTIMAGE
				+ "/test/captchas");
		imagesToTest = Arrays.asList(testDir.listFiles());
	}

	@After
	public void tearDown() throws Exception {

	}

	// // @Test
	// public void testGridSize() {
	//
	// for (int i = 0; i < imagesToTest.size(); i++) {
	// String tmp = imagesToTest.get(i).getName();
	// if (tmp.endsWith(".jpg") || tmp.endsWith(".gif")) {
	// System.out.println("test: " + tmp);
	// BufferedImage bufImageTest = EasyImage.loadImage(imagesToTest
	// .get(i).getAbsolutePath());
	//
	// GridCounter rowCounter = new GridCounter(bufImageTest);
	// ValuesInAGrid testResult = rowCounter.countGrid();
	// Point testResultSize = testResult.getSize();
	//
	// Point testTargetSize = new Point();
	// tmp = tmp.substring(tmp.indexOf("_") + 1);
	// testTargetSize.x = Integer.valueOf(tmp.split("x")[0]);
	//
	// tmp = tmp.split("x")[1];
	// testTargetSize.y = Integer.valueOf(tmp.substring(0,
	// tmp.indexOf('.')));
	//
	// assertEquals(testTargetSize, testResultSize);
	// }
	// }
	// System.err.println("test finish");
	// }
	//
	// @Test
	// public void testCenterValue() {
	//
	// for (int i = 0; i < imagesToTest.size(); i++) {
	// String tmp = imagesToTest.get(i).getName();
	// if (tmp.endsWith(".jpg") || tmp.endsWith(".gif")) {
	// System.out.println("test: " + tmp);
	// BufferedImage bufImageTest = EasyImage.loadImage(imagesToTest
	// .get(i).getAbsolutePath());
	//
	// StringIntegerPair testResultValue = EasyImage
	// .getValuesOfCenterImage(bufImageTest, null);
	// StringIntegerPair testTargetValue = new StringIntegerPair(
	// imagesToTest.get(i).getName().substring(0, 1),
	// Integer.valueOf(imagesToTest
	// .get(i)
	// .getName()
	// .substring(
	// 1,
	// imagesToTest.get(i).getName()
	// .indexOf("_"))));
	//
	// assertEquals(testTargetValue, testResultValue);
	// }
	// }
	// }

	@Test
	public void testImagePosition() {
		for (int i = 0; i < imagesToTest.size(); i++) {
			String tmp = imagesToTest.get(i).getName();
			if (tmp.endsWith(".jpg") || tmp.endsWith(".gif")) {
				System.out.println("");
				System.out.println("test: " + tmp);

				// B3_12x12_2.1.gif
				Point testTargetPosition = new Point();
				tmp = tmp.substring(tmp.indexOf("_") + 1);
				tmp = tmp.substring(tmp.indexOf("_") + 1);
				testTargetPosition.x = Integer.parseInt(tmp.substring(0,
						tmp.indexOf(".")));
				tmp = tmp.substring(tmp.indexOf(".") + 1);
				testTargetPosition.y = Integer.parseInt(tmp.substring(0,
						tmp.indexOf(".")));

				BufferedImage bufImageTest = EasyImage.loadImage(imagesToTest
						.get(i).getAbsolutePath());

				StringIntegerPair valCenter = EasyImage.getValuesOfCenterImage(
						bufImageTest, null);

				GridCounter rowCounter = new GridCounter(bufImageTest);
				ValuesInAGrid gridValues = rowCounter.countGrid();
				CompareImage resultSmallValue = gridValues.search(valCenter);
				// assertEquals(testTargetPosition,
				// resultSmallValue.getPosition());
			}
		}

	}

}
